﻿using KayakMes.Common.Dtos.ProductionDTO.Input;
using KayakMes.Common.Dtos.ProductionDTO.Output;
using KayakMes.Common.Result;
using KayakMes.ProcessStepUp.Domain.ProductionModel;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace KayakMes.ProcessManagement.Application.Production
{
    public interface IProductionService
    {
        /// <summary>
        /// 添加生产订单
        /// </summary>
        /// <param name="input">生产订单输入模型</param>
        /// <returns>返回操作结果</returns>
        ApiResult<int> AddProductionOrder(ProductionOrderInput input);

        /// <summary>
        /// 更新生产订单
        /// </summary>
        /// <param name="input">生产订单输入模型</param>
        /// <returns>返回操作结果</returns>
        ApiResult<int> UpdateProductionOrder(UpdateProductionOrderInput input);

        /// <summary>
        /// 删除生产订单
        /// </summary>
        /// <param name="id">生产订单ID</param>
        /// <returns>返回操作结果</returns>
        ApiResult<int> DeleteProductionOrder(long id);

        /// <summary>
        /// 获取生产订单列表
        /// </summary>
        /// <param name="input">查询条件</param>
        /// <returns>返回分页结果</returns>
        ApiPaging<ProductionOrderOutput> GetProductionOrders(GetProductionOrderInput input);

        /// <summary>
        /// 根据ID获取生产订单
        /// </summary>
        /// <param name="id">生产订单ID</param>
        /// <returns>返回操作结果</returns>
        ApiResult<ProductionOrderOutput> GetProductionOrderById(long id);
    }
}